Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.11.2012, 12:50
Аватар для xaocbozzz
Интересующийся
Отправить личное сообщение для xaocbozzz Посмотреть профиль Найти все сообщения от xaocbozzz
 
Регистрация: 28.04.2012
Сообщений: 13

Отсылаются только цифры: JSON через AJAX
Проблема с отправкой данных как JSON посредством AJAX - передаются только числа...

$.ajax({

type: 'POST',
url: 'php/spamcontrol/keycheck.php',
data: {"akey": "qwe16", "bkey": "123", "ckey": "РУС!"}, // Передаваемая строка
dataType: 'json',
error: function () {
   alert('Данные не передались');
   },
success: function (data) {
   alert (data);
   }
     
});


Когда отправляю данную строку:
{"akey": "qwe16", "bkey": "123", "ckey": "РУС!"}

в этот скрипт:
<?php
$a = $_POST['akey'];
$b = $_POST['bkey'];
$c = $_POST['ckey'];

$my_a = json_decode($a);
$my_b = json_decode($b);
$my_c = json_decode($c);

echo $my_a.$my_b.$my_c;
?>


Приходят только цифры:
123

А ожидаю получить:
qwe16123РУС!

Скрин алерта:


Только не спрашивайте почему нельзя так сделать: php/spamcontrol/keycheck.php?akey=qwe16&bkey=123&ckey=РУС! - я принципиально хочу понять json и застрял на месте.
Ответить с цитированием
  #2 (permalink)  
Старый 22.11.2012, 12:58
Аватар для xaocbozzz
Интересующийся
Отправить личное сообщение для xaocbozzz Посмотреть профиль Найти все сообщения от xaocbozzz
 
Регистрация: 28.04.2012
Сообщений: 13

В догонку:
- php 5
- denwer
- opera 11.5 и mozilla 8.0.1
- firebug:

akey qwe16
bkey 123
ckey РУС!

Исходный код

akey=qwe16&bkey=123&ckey=%D0%A0%D0%A3%D0%A1!
Ответить с цитированием
  #3 (permalink)  
Старый 22.11.2012, 13:23
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

json_decode - это зачем делаешь? О_о
Ответить с цитированием
  #4 (permalink)  
Старый 23.11.2012, 10:19
Аватар для xaocbozzz
Интересующийся
Отправить личное сообщение для xaocbozzz Посмотреть профиль Найти все сообщения от xaocbozzz
 
Регистрация: 28.04.2012
Сообщений: 13

Спасибо за наводку!
В процессе выяснил:

1. json_decode не требуется ($my_a = json_decode($a);)
2. принимать данные обратно в формате json не нужно (dataType: 'json',)

Правильный код:
$.ajax({
 
type: 'POST',
url: 'php/spamcontrol/keycheck.php',
data: {"akey": "qwe16", "bkey": 123, "ckey": "РУС!"}, // кавычки у числа не обязательны
dataType: '', // не требуется
error: function () {
   alert('Данные не передались');
   },
success: function (data) {
   alert (data);
   }
      
});


PHP:
<?php
$a = $_POST['akey'];
$b = $_POST['bkey'];
$c = $_POST['ckey'];
// Никаких json_decode
echo $a.$b.$c;
?>


Результат:


А как тогда мне передать в PHP скрипт всю строку целиком, чтобы я мог ее там преобразовать при помощи json_decode?
Ответить с цитированием
  #5 (permalink)  
Старый 23.11.2012, 16:12
Аспирант
Отправить личное сообщение для Sanda Посмотреть профиль Найти все сообщения от Sanda
 
Регистрация: 12.10.2012
Сообщений: 90

var data = {"akey": "qwe16", "bkey": 123, "ckey": "РУС!"};
$.ajax({
    data: {str: JSON.stringify(data)}
    , ...
})

Не будет работать в браузерах, не имеющих встроенного объекта JSON. Кажется, это IE7-, точнее можно глянуть в интернете.

Либо же формировать сами данные не объектом, а json-строкой, а потом кидать их:
var data = '{"akey": "qwe16", "bkey": 123, "ckey": "РУС!"}';
$.ajax({
    data: {str: escape(data)}
    , ...
})
Ответить с цитированием
  #6 (permalink)  
Старый 23.11.2012, 17:18
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

Сообщение от Sanda Посмотреть сообщение
var data = '{"akey": "qwe16", "bkey": 123, "ckey": "РУС!"}';
$.ajax({
    data: {str: escape(data)}
    , ...
})
красивее:
var data = {"akey": "qwe16", "bkey": 123, "ckey": "РУС!"};
$.ajax({
    data: data, 
    ...
Ответить с цитированием
  #7 (permalink)  
Старый 23.11.2012, 17:37
Аспирант
Отправить личное сообщение для Sanda Посмотреть профиль Найти все сообщения от Sanda
 
Регистрация: 12.10.2012
Сообщений: 90

keen, вопрос звучал так:
"А как тогда мне передать в PHP скрипт всю строку целиком, чтобы я мог ее там преобразовать при помощи json_decode?"
Ответить с цитированием
  #8 (permalink)  
Старый 23.11.2012, 17:41
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

итого: берём json, представляем его в виде строки, передаём на сервер, там из строки снова делаем json и обрабатываем. изврат же!
Ответить с цитированием
  #9 (permalink)  
Старый 23.11.2012, 22:04
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Зачем если не секрет использовать JSON? (это не издевка, правда не понятно)
__________________
оляля, ололо
Ответить с цитированием
  #10 (permalink)  
Старый 24.11.2012, 00:26
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

Сообщение от 9xakep Посмотреть сообщение
Зачем если не секрет использовать JSON? (это не издевка, правда не понятно)
вообще или сейчас?
впрочем, по-моему ответы настолько очевидны, что..
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ajax $.post вместо json проблема данные не приходят Sadist_dead AJAX и COMET 2 12.07.2012 17:59
Ajax и Json callback функция borabora Prototype & script.aculo.us 0 30.01.2012 15:01
Счетчики - вызвать через Ajax yuriii jQuery 8 18.05.2010 12:26
jQuery, jsTree - обновление дерева через ajax extremum.func jQuery 2 09.11.2009 14:48
Просмотр передаваемых данных через AJAX Гость AJAX и COMET 3 04.08.2008 14:34